<!DOCTYPE html>
<html>
<head>
	<!-- Global site tag (gtag.js) - Google Analytics -->
	<script async src="https://www.googletagmanager.com/gtag/js?id='UA-133422980-2"></script>
	<script>
	  window.dataLayer = window.dataLayer || [];
	  function gtag(){dataLayer.push(arguments);}
	  gtag('js', new Date());

	  gtag('config', 'UA-133422980-2');
	</script>

	<meta charset="utf-8">
	<meta http-equiv="x-ua-compatible" content="ie=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">

	<title>
		gem5: RE-gem5: Building Sustainable Research Infrastructure 
	</title>

	<!-- SITE FAVICON -->
	<link rel="shortcut icon" type="image/gif" href="/assets/img/gem5ColorVert.gif"/>

	<link rel="canonical" href="http://localhost:4000/project/2019/09/12/re-gem5.html">
	<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700,800,600' rel='stylesheet' type='text/css'>
	<link href='https://fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'>

	<!-- FAVICON -->
	<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

	<!-- BOOTSTRAP -->
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

	<!-- CUSTOM CSS -->
	<link rel="stylesheet" href="/css/main.css">
</head>


<body>
	<nav class="navbar navbar-expand-md navbar-light bg-light">
  <a class="navbar-brand" href="/">
		<img src="/assets/img/gem5ColorLong.gif" alt="gem5" height=55px>
	</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <!-- LIST FOR NAVBAR -->
    <ul class="navbar-nav ml-auto">
      <!-- HOME -->
      <li class="nav-item ">
        <a class="nav-link" href="/">Home</a>
      </li>

      <!-- ABOUT -->
			<li class="nav-item dropdown ">
				<a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
					About
				</a>
				<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="/about">About gem5</a>
          <a class="dropdown-item" href="/publications">Publications</a>
          <a class="dropdown-item" href="/governance">Governance</a>
				</div>
			</li>

      <!-- DOCUMENTATION -->
			<li class="nav-item dropdown ">
				<a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
					Documentation
				</a>
				<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
					<!-- Pull navigation from _data/documentation.yml -->
					
            <a class="dropdown-item" href="/documentation">gem5 documentation</a>
					
            <a class="dropdown-item" href="/documentation/learning_gem5/introduction">Learning gem5</a>
					
            <a class="dropdown-item" href="http://doxygen.gem5.org/release/current/index.html">gem5 Doxygen</a>
					
            <a class="dropdown-item" href="/documentation/reporting_problems">Reporting Problems</a>
					
				</div>
			</li>

      <!-- EVENTS -->
			<li class="nav-item dropdown ">
        <a class="nav-link" href="/events/">Events</a>
			</li>

      <!-- CONTRIBUTING -->
      <li class="nav-item ">
        <a class="nav-link" href="/contributing">Contributing</a>
      </li>

      <!-- BLOG -->
      <li class="nav-item ">
        <a class="nav-link" href="/blog">Blog</a>
      </li>

      <!-- SEARCH -->
			<li class="nav-item ">
        <a class="nav-link" href="/search">Search</a>
      </li>
    </ul>
  </div>
</nav>

	<main>
		<br><br>
<div class="container post">
  <h1>RE-gem5: Building Sustainable Research Infrastructure</h1>
  <time>Sep 12, 2019 • Jason Lowe-Power and Matt Sinclair</time>
  <hr>
  <p>Note: this post originally appeared on <a href="https://www.sigarch.org/re-gem5-building-sustainable-research-infrastructure/">Computer Architecture Today</a>.</p>

<p>RE-gem5 is a directed effort to rejuvenate the underlying infrastructure of <a href="/">gem5</a>. RE-gem5 is not a new simulator or a new project; it is a project to enhance and support the current gem5 infrastructure.</p>

<p>The community-developed gem5 infrastructure is one of the most popular and widely known cycle-level computer architecture simulation systems. It is used in academia and industry for research and used for teaching at universities all over the world. The gem5 paper has over (3100 citations)[https://scholar.google.com/scholar?q=gem5] in the past 8 years. However, much of the software was written 15 years ago, and it is currently maintained by students and researchers. Without a concerted effort to improve the underlying infrastructure, gem5’s software will become increasingly fragile and its users’ research output will gradually diminish due to time spent on ad hoc maintenance instead of research.</p>

<p>Thus, we are embarking on the RE-gem5 project to reinvigorate the gem5 infrastructure to enable the next 15 years of computer architecture research. This project will enhance and rejuvenate the aging gem5 community infrastructure through improvements to the underlying gem5 components, community outreach and improved user services, and developing new models for emerging devices required for evaluating important applications. This project will create a sustainable path for the future of the gem5 infrastructure by improving the code testing coverage and increasing the robustness of hardware device models. Additionally, community outreach efforts will broaden the community, increasing the impact of gem5 and providing more contributors to continue development of this infrastructure after this project completes.</p>

<p>Some of the highlights of our plan include a full-time programmer to help with gem5 community development, stable, tagged, rigorously tested and documented releases multiple times per year, community outreach, known-good configurations, and supporting full machine learning stacks. Many more details can be found in the roadmap where we are currently soliciting feedback.</p>

<h1 id="community-outreach">Community outreach</h1>

<p>One of our main goals is to make gem5 easier to use and accessible for a broader range of users, both to increase the impact of gem5 and provide more contributors to continue development of the infrastructure. To this end, we will work on expanding gem5’s documentation and creating and running two gem5 summer school sessions over the next three years.  These summer schools will closely follow the content in the <a href="/documentation/learning_gem5/">Learning gem5 book</a>, with new modules to cover additional topics such as CPU-GPU programs, debugging complex coherence protocols, and best practices when using gem5.</p>

<h1 id="known-good-configurations">Known-good configurations</h1>

<p>Most computer architecture research, and computer systems research more broadly, asks the question “How does my new idea compare to the current state-of-the-art systems?” Models which accurately represent the current state of the art are necessary to investigate these questions. As part of this project, we will provide the community with a set of publicly validated models of current architectural system components including CPU cores, GPU compute units (CUs), caches, main memory systems, and devices. We will strive for accuracy compared to real systems; however, since most systems are proprietary and complex, perfect accuracy for all workloads will be difficult. Thus, we will broadly advertise the relative performance, power, and other metrics when providing these models so users can make an informed decision when choosing their baseline configurations.</p>

<p>Known-good configurations will provide three main benefits:</p>

<ol>
  <li>They will allow researchers to concentrate on only one part of the system and spend more time on their innovations and less time fighting to configure a baseline.</li>
  <li>They will enable systems researchers outside of computer architecture to use gem5 more easily.</li>
  <li>They will improve the reproducibility of research by making it easier to write good methodology sections in papers (e.g., “Our baseline is the desktop proxy from gem5’s known-good configuration library.”).</li>
</ol>

<p>We will work with the computer architecture and broader computer systems communities to choose and prioritize the specific state-of-the-art to use as baselines and solicit feedback on which workloads and systems are most important. We will include validated configurations for both real hardware systems (e.g., a proxy for an Intel Core i7 processor) and high impact research proposals.</p>

<h1 id="supporting-machine-learning-stacks">Supporting machine learning stacks</h1>

<p>To properly analyze how ML workloads perform on future architectures and the benefits of co-designed hardware-software solutions, the community needs completely open-source simulation platforms. High-level frameworks like <a href="https://pytorch.org/">PyTorch</a>, <a href="https://caffe.berkeleyvision.org/">Caffe</a>, and <a href="https://www.tensorflow.org/">TensorFlow</a>, which are widely used, build on top of optimized ML libraries like <a href="https://github.com/ROCmSoftwarePlatform/MIOpen">MIOpen</a>. We will integrate these frameworks into the gem5 ecosystem by improving gem5’s full system support and providing gem5 users with a set of <a href="https://hub.docker.com/u/gem5">Docker containers</a> to quickly get started with these complex frameworks. We will explore multiple methods of reducing simulation time, including (SimPoints)[http://cseweb.ucsd.edu/~calder/simpoint/], statistical simulation, checkpointing the state of the system to be reloaded, and <a href="https://www.it.uu.se/research/group/uart/modeling/fast_simulation/parallel_full_speed_ahead">virtualized fast forwarding</a> and make these frameworks public and open source. We will also integrate accelerator models into the mainline gem5 code so that a rich set of realistic ML workloads can also be run on and optimized for accelerators, including the TPU.</p>

<h1 id="gem5-roadmap">gem5 Roadmap</h1>

<p>As the initial step in this project, we are looking for community feedback on our near- and medium-term roadmap. A draft of the roadmap is available at the following <a href="https://docs.google.com/document/d/1fv01HavfkIIqfcgZoKUpojkUKkWujxspRCcvS5cTfkk/edit?usp=sharing">link</a> that anyone can comment on and make suggestions.</p>

<p>The purpose of this roadmap is twofold:</p>

<p>We want to get feedback to see what other features are important to the community and whether our current priorities are aligned with the community.
We want to broadcast to the community that changes and improvements are coming.
gem5 is widely used across the computer architecture community. We would love to hear your feedback on the roadmap! We truly believe gem5 is a community project, and that requires the community (everyone reading this blog post) to contribute! <a href="https://docs.google.com/document/d/1fv01HavfkIIqfcgZoKUpojkUKkWujxspRCcvS5cTfkk/edit?usp=sharing">Giving feedback on gem5’s direction</a> is an easy way to have a big impact on gem5.</p>

<h1 id="acknowledgements">Acknowledgements</h1>
<p>RE-gem5 is currently primarily sponsored by an NSF CCRI grant. We are actively looking for additional sponsors to expand the impact of this project and enable sustainable gem5 development for many years to come. If you or your company is interested in sponsoring gem5 development to further enhance its research potential please reach out to Jason Lowe-Power (jlowepower@ucdavis.edu).</p>

<p>gem5 is an open source community project and many of the ideas in this blogpost and the roadmap have come from the community at large. Details about gem5’s governance can be found on <a href="/governance/">our website</a>. If you would like to join the discussion, please subscribe to the <a href="/mailing_lists">gem5 mailing lists</a>.</p>

  <div class="commentbox"></div>

</div>

	</main>
	<footer class="page-footer">
	<div class="container">
		<div class="row">

			<div class="col-12 col-sm-4">
				<p>gem5</p>
				<p><a href="/about">About</a></p>
				<p><a href="/publications">Publications</a></p>
				<p><a href="/contributing">Contributing</a></p>
				<p><a href="/governance">Governance</a></p>
			<br></div>

			<div class="col-12 col-sm-4">
				<p>Docs</p>
				<p><a href="/documentation">Documentation</a></p>
				<p><a href="http://gem5.org/Documentation">Old Documentation</a></p>
				<p><a href="https://gem5.googlesource.com/public/gem5">Source</a></p>
			<br></div>

			<div class="col-12 col-sm-4">
				<p>Help</p>
				<p><a href="/search">Search</a></p>
				<p><a href="/mailing_lists">Mailing Lists</a></p>
				<p><a href="https://gem5.googlesource.com/public/gem5-website/+/refs/heads/master/README.md">Website Source</a></p>
			<br></div>

		</div>
	</div>
</footer>


	<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
	<script src="https://unpkg.com/commentbox.io/dist/commentBox.min.js"></script>

	<script>
	  // When the user scrolls down 20px from the top of the document, show the button
	  window.onscroll = function() {scrollFunction()};

	  function scrollFunction() {
	      if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 20) {
	          document.getElementById("myBtn").style.display = "block";
	      } else {
	          document.getElementById("myBtn").style.display = "none";
	      }
	  }

	  // When the user clicks on the button, scroll to the top of the document
	  function topFunction() {
	      document.body.scrollTop = 0;
	      document.documentElement.scrollTop = 0;
	  }

		import commentBox from 'commentbox.io';
		// or
		const commentBox = require('commentbox.io');
		// or if using the CDN, it will be available as a global "commentBox" variable.

		commentBox('my-project-id');

	</script>

</body>


</html>
